import { ref } from "vue"
// 弹窗组件
import type pageModal from "@/components/page-modal"
import { mainStore } from "@/stores/modules/main"

type CallbackFn = () => void

export function usePageModal(
  addCallback?: CallbackFn,
  editCallback?: CallbackFn
): any[] {
  const pageModalRef = ref<InstanceType<typeof pageModal>>()
  const defaultInfo = ref({})
  // 新建
  const handleAdd = () => {
    defaultInfo.value = {}
    if (pageModalRef.value) {
      pageModalRef.value.dialogVisible = true
    }
    // 组件私有回调
    addCallback && addCallback()
  }
  // 编辑
  const handleEdit = (item: any) => {
    defaultInfo.value = { ...item }
    if (pageModalRef.value) {
      pageModalRef.value.dialogVisible = true
    }
    // 组件私有回调
    editCallback && editCallback()
  }
  // 分配权限
  const setPermissions = async (id: number) => {
    const mainstore = mainStore()
    // 获取角色权限
    await mainstore.getOptionRole(id)
    if (pageModalRef.value) {
      pageModalRef.value.permDialogVisible = true
      pageModalRef.value.setId = id
    }
  }

  return [pageModalRef, defaultInfo, handleAdd, handleEdit, setPermissions]
}
